home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / macros / latex209 / contrib / biblist / biblist.bst-dist / biblist.bst next >
Text File  |  1992-01-14  |  19KB  |  934 lines

  1. %% $Id: itibst.doc,v 1.3 1992/01/13 13:59:34 schrod Exp schrod $
  2. %%----------------------------------------------------------------------
  3. %% BibTeX `THD/ITI' family of bibliography styles
  4. %% The file itibst.doc has the documentation for this style.
  5. %% Please notify Joachim Schrod (schrod@iti.informatik.th-darmstadt.de) of
  6. %% any bugs in these styles or in this documentation file.
  7. %%
  8. %% CAVEAT: This is experimental software in an alpha-test version.
  9. %%       The documentation is not complete, installation instructions
  10. %%       are missing (or perhaps not updated), etc. Please send
  11. %%       bug reports (and, of course, repairs) to me, but do not expect
  12. %%       that I will react very soon. I will collect the stuff and will
  13. %%       incorporate it at a later date.
  14. %%
  15. %% biblist style (unsorted, for listings of bib files)
  16. ENTRY
  17.   { address
  18.     annote
  19.     author
  20.     booktitle
  21.     chapter
  22.     edition
  23.     editor
  24.     howpublished
  25.     institution
  26.     isbn
  27.     issn
  28.     journal
  29.     key
  30.     library
  31.     month
  32.     note
  33.     number
  34.     organization
  35.     pages
  36.     publisher
  37.     school
  38.     series
  39.     title
  40.     type
  41.     volume
  42.     year
  43.   }
  44.   {}
  45.   { label }
  46. INTEGERS { output.state before.all mid.sentence after.sentence after.block }
  47. FUNCTION {init.state.consts}
  48. { #0 'before.all :=
  49.   #1 'mid.sentence :=
  50.   #2 'after.sentence :=
  51.   #3 'after.block :=
  52. }
  53. STRINGS { s t }
  54. FUNCTION {output.nonnull}
  55. { 's :=
  56.   output.state mid.sentence =
  57.     { ", " * write$ }
  58.     { output.state after.block =
  59.         { add.period$ write$
  60.           newline$
  61.           "\newblock " write$
  62.         }
  63.         { output.state before.all =
  64.             'write$
  65.             { add.period$ " " * write$ }
  66.           if$
  67.         }
  68.       if$
  69.       mid.sentence 'output.state :=
  70.     }
  71.   if$
  72.   s
  73. }
  74. FUNCTION {output}
  75. { duplicate$ empty$
  76.     'pop$
  77.     'output.nonnull
  78.   if$
  79. }
  80. FUNCTION {output.check}
  81. { 't :=
  82.   duplicate$ empty$
  83.     { pop$ "empty " t * " in " * cite$ * warning$ }
  84.     'output.nonnull
  85.   if$
  86. }
  87. FUNCTION {output.bibitem}
  88. { newline$
  89.   "\bibitem{" write$
  90.   cite$ write$
  91.   "}" write$
  92.   newline$
  93.   ""
  94.   before.all 'output.state :=
  95. }
  96. FUNCTION {fin.entry}
  97. { add.period$
  98.   write$
  99.   newline$
  100. }
  101. FUNCTION {new.block}
  102. { output.state before.all =
  103.     'skip$
  104.     { after.block 'output.state := }
  105.   if$
  106. }
  107. FUNCTION {new.sentence}
  108. { output.state after.block =
  109.     'skip$
  110.     { output.state before.all =
  111.         'skip$
  112.         { after.sentence 'output.state := }
  113.       if$
  114.     }
  115.   if$
  116. }
  117. FUNCTION {output.annote}
  118. {
  119.   annote empty$
  120.     {  }
  121.     {
  122.       new.block  "\annote " output
  123.       newline$  write$
  124.       annote write$  newline$
  125.       "\endannote"
  126.     }
  127.   if$
  128. }
  129. FUNCTION {not}
  130. {   { #0 }
  131.     { #1 }
  132.   if$
  133. }
  134. FUNCTION {and}
  135. {   'skip$
  136.     { pop$ #0 }
  137.   if$
  138. }
  139. FUNCTION {or}
  140. {   { pop$ #1 }
  141.     'skip$
  142.   if$
  143. }
  144. FUNCTION {new.block.checka}
  145. { empty$
  146.     'skip$
  147.     'new.block
  148.   if$
  149. }
  150. FUNCTION {new.block.checkb}
  151. { empty$
  152.   swap$ empty$
  153.   and
  154.     'skip$
  155.     'new.block
  156.   if$
  157. }
  158. FUNCTION {new.sentence.checka}
  159. { empty$
  160.     'skip$
  161.     'new.sentence
  162.   if$
  163. }
  164. FUNCTION {new.sentence.checkb}
  165. { empty$
  166.   swap$ empty$
  167.   and
  168.     'skip$
  169.     'new.sentence
  170.   if$
  171. }
  172. FUNCTION {field.or.null}
  173. { duplicate$ empty$
  174.     { pop$ "" }
  175.     'skip$
  176.   if$
  177. }
  178. FUNCTION {emphasize}
  179. { duplicate$ empty$
  180.     { pop$ "" }
  181.     { "{\it " swap$ * "}" * }
  182.   if$
  183. }
  184. INTEGERS { nameptr namesleft numnames }
  185. FUNCTION {format.names}
  186. { 's :=
  187.   #1 'nameptr :=
  188.   s num.names$ 'numnames :=
  189.   numnames 'namesleft :=
  190.     { namesleft #0 > }
  191.     { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
  192.       nameptr #1 >
  193.         { namesleft #1 >
  194.             { ", " * t * }
  195.             { numnames #2 >
  196.                 { "," * }
  197.                 'skip$
  198.               if$
  199.               t "others" =
  200.                 { " et~al." * }
  201.                 { " and " * t * }
  202.               if$
  203.             }
  204.           if$
  205.         }
  206.         't
  207.       if$
  208.       nameptr #1 + 'nameptr :=
  209.       namesleft #1 - 'namesleft :=
  210.     }
  211.   while$
  212. }
  213. FUNCTION {format.authors}
  214. { author empty$
  215.     { "" }
  216.     { author format.names }
  217.   if$
  218. }
  219. FUNCTION {format.editors}
  220. { editor empty$
  221.     { "" }
  222.     { editor format.names
  223.       editor num.names$ #1 >
  224.         { ", editors" * }
  225.         { ", editor" * }
  226.       if$
  227.     }
  228.   if$
  229. }
  230. FUNCTION {format.isbn}
  231. { isbn empty$
  232.     { "" }
  233.     { new.sentence "ISBN~" isbn * }
  234.   if$
  235. }
  236. FUNCTION {format.issn}
  237. { issn empty$
  238.     { "" }
  239.     { new.sentence "ISSN~" issn * }
  240.   if$
  241. }
  242. FUNCTION {format.library}
  243. { library empty$
  244.     { "" }
  245.     { "\library{" library * "}" * }
  246.   if$
  247. }
  248. FUNCTION {format.title}
  249. { title empty$
  250.     { "" }
  251.     'title
  252.   if$
  253. }
  254. FUNCTION {n.dashify}
  255. { 't :=
  256.   ""
  257.     { t empty$ not }
  258.     { t #1 #1 substring$ "-" =
  259.         { t #1 #2 substring$ "--" = not
  260.             { "--" *
  261.               t #2 global.max$ substring$ 't :=
  262.             }
  263.             {   { t #1 #1 substring$ "-" = }
  264.                 { "-" *
  265.                   t #2 global.max$ substring$ 't :=
  266.                 }
  267.               while$
  268.             }
  269.           if$
  270.         }
  271.         { t #1 #1 substring$ *
  272.           t #2 global.max$ substring$ 't :=
  273.         }
  274.       if$
  275.     }
  276.   while$
  277. }
  278. FUNCTION {format.date}
  279. { year empty$
  280.     { month empty$
  281.         { "" }
  282.         { "there's a month but no year in " cite$ * warning$
  283.           month
  284.         }
  285.       if$
  286.     }
  287.     { month empty$
  288.         'year
  289.         { month " " * year * }
  290.       if$
  291.     }
  292.   if$
  293. }
  294. FUNCTION {format.btitle}
  295. { title emphasize
  296. }
  297. FUNCTION {tie.or.space.connect}
  298. { duplicate$ text.length$ #3 <
  299.     { "~" }
  300.     { " " }
  301.   if$
  302.   swap$ * *
  303. }
  304. FUNCTION {either.or.check}
  305. { empty$
  306.     'pop$
  307.     { "can't use both " swap$ * " fields in " * cite$ * warning$ }
  308.   if$
  309. }
  310. FUNCTION {format.bvolume}
  311. { volume empty$
  312.     { "" }
  313.     { "volume" volume tie.or.space.connect
  314.       series empty$
  315.         'skip$
  316.         { " of " * series emphasize * }
  317.       if$
  318.       "volume and number" number either.or.check
  319.     }
  320.   if$
  321. }
  322. FUNCTION {format.number.series}
  323. { volume empty$
  324.     { number empty$
  325.         { series field.or.null }
  326.         { output.state mid.sentence =
  327.             { "number" }
  328.             { "Number" }
  329.           if$
  330.           number tie.or.space.connect
  331.           series empty$
  332.             { "there's a number but no series in " cite$ * warning$ }
  333.             { " in " * series * }
  334.           if$
  335.         }
  336.       if$
  337.     }
  338.     { "" }
  339.   if$
  340. }
  341. FUNCTION {format.edition}
  342. { edition empty$
  343.     { "" }
  344.     { output.state mid.sentence =
  345.         { edition "l" change.case$ " edition" * }
  346.         { edition "t" change.case$ " edition" * }
  347.       if$
  348.     }
  349.   if$
  350. }
  351. INTEGERS { multiresult }
  352. FUNCTION {multi.page.check}
  353. { 't :=
  354.   #0 'multiresult :=
  355.     { multiresult not
  356.       t empty$ not
  357.       and
  358.     }
  359.     { t #1 #1 substring$
  360.       duplicate$ "-" =
  361.       swap$ duplicate$ "," =
  362.       swap$ "+" =
  363.       or or
  364.         { #1 'multiresult := }
  365.         { t #2 global.max$ substring$ 't := }
  366.       if$
  367.     }
  368.   while$
  369.   multiresult
  370. }
  371. FUNCTION {format.pages}
  372. { pages empty$
  373.     { "" }
  374.     { pages multi.page.check
  375.         { "pages" pages n.dashify tie.or.space.connect }
  376.         { "page" pages tie.or.space.connect }
  377.       if$
  378.     }
  379.   if$
  380. }
  381. FUNCTION {format.vol.num.pages}
  382. { volume field.or.null
  383.   number empty$
  384.     'skip$
  385.     { "(" number * ")" * *
  386.       volume empty$
  387.         { "there's a number but no volume in " cite$ * warning$ }
  388.         'skip$
  389.       if$
  390.     }
  391.   if$
  392.   pages empty$
  393.     'skip$
  394.     { duplicate$ empty$
  395.         { pop$ format.pages }
  396.         { ":" * pages n.dashify * }
  397.       if$
  398.     }
  399.   if$
  400. }
  401. FUNCTION {format.chapter.pages}
  402. { chapter empty$
  403.     'format.pages
  404.     { type empty$
  405.         { "chapter" }
  406.         { type "l" change.case$ }
  407.       if$
  408.       chapter tie.or.space.connect
  409.       pages empty$
  410.         'skip$
  411.         { ", " * format.pages * }
  412.       if$
  413.     }
  414.   if$
  415. }
  416. FUNCTION {format.in.ed.booktitle}
  417. { booktitle empty$
  418.     { "" }
  419.     { editor empty$
  420.         { "In " booktitle emphasize * }
  421.         { "In " format.editors * ", " * booktitle emphasize * }
  422.       if$
  423.     }
  424.   if$
  425. }
  426. FUNCTION {empty.misc.check}
  427. { author empty$ title empty$ howpublished empty$
  428.   month empty$ year empty$ note empty$
  429.   and and and and and
  430.     { "all relevant fields are empty in " cite$ * warning$ }
  431.     'skip$
  432.   if$
  433. }
  434. FUNCTION {format.thesis.type}
  435. { type empty$
  436.     'skip$
  437.     { pop$
  438.       type "t" change.case$
  439.     }
  440.   if$
  441. }
  442. FUNCTION {format.tr.number}
  443. { type empty$
  444.     { "Technical Report" }
  445.     'type
  446.   if$
  447.   number empty$
  448.     { "t" change.case$ }
  449.     { number tie.or.space.connect }
  450.   if$
  451. }
  452. FUNCTION {format.article.crossref}
  453. { key empty$
  454.     { journal empty$
  455.         { "need key or journal for " cite$ * " to crossref " * crossref *
  456.           warning$
  457.           ""
  458.         }
  459.         { "In {\it " journal * "\/}" * }
  460.       if$
  461.     }
  462.     { "In " key * }
  463.   if$
  464.   " \cite{" * crossref * "}" *
  465. }
  466. FUNCTION {format.crossref.editor}
  467. { editor #1 "{vv~}{ll}" format.name$
  468.   editor num.names$ duplicate$
  469.   #2 >
  470.     { pop$ " et~al." * }
  471.     { #2 <
  472.         'skip$
  473.         { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
  474.             { " et~al." * }
  475.             { " and " * editor #2 "{vv~}{ll}" format.name$ * }
  476.           if$
  477.         }
  478.       if$
  479.     }
  480.   if$
  481. }
  482. FUNCTION {format.book.crossref}
  483. { volume empty$
  484.     { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
  485.       "In "
  486.     }
  487.     { "Volume" volume tie.or.space.connect
  488.       " of " *
  489.     }
  490.   if$
  491.   editor empty$
  492.   editor field.or.null author field.or.null =
  493.   or
  494.     { key empty$
  495.         { series empty$
  496.             { "need editor, key, or series for " cite$ * " to crossref " *
  497.               crossref * warning$
  498.               "" *
  499.             }
  500.             { "{\it " * series * "\/}" * }
  501.           if$
  502.         }
  503.         { key * }
  504.       if$
  505.     }
  506.     { format.crossref.editor * }
  507.   if$
  508.   " \cite{" * crossref * "}" *
  509. }
  510. FUNCTION {format.incoll.inproc.crossref}
  511. { editor empty$
  512.   editor field.or.null author field.or.null =
  513.   or
  514.     { key empty$
  515.         { booktitle empty$
  516.             { "need editor, key, or booktitle for " cite$ * " to crossref " *
  517.               crossref * warning$
  518.               ""
  519.             }
  520.             { "In {\it " booktitle * "\/}" * }
  521.           if$
  522.         }
  523.         { "In " key * }
  524.       if$
  525.     }
  526.     { "In " format.crossref.editor * }
  527.   if$
  528.   " \cite{" * crossref * "}" *
  529. }
  530. FUNCTION {article}
  531. { output.bibitem
  532.   format.library output
  533.   new.sentence
  534.   format.authors "author" output.check
  535.   new.block
  536.   format.title "title" output.check
  537.   new.block
  538.   crossref missing$
  539.     { journal emphasize "journal" output.check
  540.       format.vol.num.pages output
  541.       format.date "year" output.check
  542.     }
  543.     { format.article.crossref output.nonnull
  544.       format.pages output
  545.     }
  546.   if$
  547.   format.issn output
  548.   new.block
  549.   note output
  550.   output.annote
  551.   fin.entry
  552. }
  553. FUNCTION {book}
  554. { output.bibitem
  555.   format.library output
  556.   new.sentence
  557.   author empty$
  558.     { format.editors "author and editor" output.check }
  559.     { format.authors output.nonnull
  560.       crossref missing$
  561.         { "author and editor" editor either.or.check }
  562.         'skip$
  563.       if$
  564.     }
  565.   if$
  566.   new.block
  567.   format.btitle "title" output.check
  568.   crossref missing$
  569.     { format.bvolume output
  570.       new.block
  571.       format.number.series output
  572.       new.sentence
  573.       publisher "publisher" output.check
  574.       address output
  575.     }
  576.     { new.block
  577.       format.book.crossref output.nonnull
  578.     }
  579.   if$
  580.   format.edition output
  581.   format.date "year" output.check
  582.   format.isbn output
  583.   new.block
  584.   note output
  585.   output.annote
  586.   fin.entry
  587. }
  588. FUNCTION {booklet}
  589. { output.bibitem
  590.   format.library output
  591.   new.sentence
  592.   format.authors output
  593.   new.block
  594.   format.title "title" output.check
  595.   howpublished address new.block.checkb
  596.   howpublished output
  597.   address output
  598.   format.date output
  599.   new.block
  600.   note output
  601.   output.annote
  602.   fin.entry
  603. }
  604. FUNCTION {inbook}
  605. { output.bibitem
  606.   format.library output
  607.   new.sentence
  608.   author empty$
  609.     { format.editors "author and editor" output.check }
  610.     { format.authors output.nonnull
  611.       crossref missing$
  612.         { "author and editor" editor either.or.check }
  613.         'skip$
  614.       if$
  615.     }
  616.   if$
  617.   new.block
  618.   format.btitle "title" output.check
  619.   crossref missing$
  620.     { format.bvolume output
  621.       format.chapter.pages "chapter and pages" output.check
  622.       new.block
  623.       format.number.series output
  624.       new.sentence
  625.       publisher "publisher" output.check
  626.       address output
  627.     }
  628.     { format.chapter.pages "chapter and pages" output.check
  629.       new.block
  630.       format.book.crossref output.nonnull
  631.     }
  632.   if$
  633.   format.edition output
  634.   format.date "year" output.check
  635.   format.isbn output
  636.   new.block
  637.   note output
  638.   output.annote
  639.   fin.entry
  640. }
  641. FUNCTION {incollection}
  642. { output.bibitem
  643.   format.library output
  644.   new.sentence
  645.   format.authors "author" output.check
  646.   new.block
  647.   format.title "title" output.check
  648.   new.block
  649.   crossref missing$
  650.     { format.in.ed.booktitle "booktitle" output.check
  651.       format.bvolume output
  652.       format.number.series output
  653.       format.chapter.pages output
  654.       new.sentence
  655.       publisher "publisher" output.check
  656.       address output
  657.       format.edition output
  658.       format.date "year" output.check
  659.     }
  660.     { format.incoll.inproc.crossref output.nonnull
  661.       format.chapter.pages output
  662.     }
  663.   if$
  664.   format.isbn output
  665.   new.block
  666.   note output
  667.   output.annote
  668.   fin.entry
  669. }
  670. FUNCTION {inproceedings}
  671. { output.bibitem
  672.   format.library output
  673.   new.sentence
  674.   format.authors "author" output.check
  675.   new.block
  676.   format.title "title" output.check
  677.   new.block
  678.   crossref missing$
  679.     { format.in.ed.booktitle "booktitle" output.check
  680.       format.bvolume output
  681.       format.number.series output
  682.       format.pages output
  683.       address empty$
  684.         { organization publisher new.sentence.checkb
  685.           organization output
  686.           publisher output
  687.           format.date "year" output.check
  688.         }
  689.         { address output.nonnull
  690.           format.date "year" output.check
  691.           new.sentence
  692.           organization output
  693.           publisher output
  694.         }
  695.       if$
  696.     }
  697.     { format.incoll.inproc.crossref output.nonnull
  698.       format.pages output
  699.     }
  700.   if$
  701.   format.isbn output
  702.   format.issn output
  703.   new.block
  704.   note output
  705.   output.annote
  706.   fin.entry
  707. }
  708. FUNCTION {conference} { inproceedings }
  709. FUNCTION {manual}
  710. { output.bibitem
  711.   format.library output
  712.   new.sentence
  713.   author empty$
  714.     { organization empty$
  715.         'skip$
  716.         { organization output.nonnull
  717.           address output
  718.         }
  719.       if$
  720.     }
  721.     { format.authors output.nonnull }
  722.   if$
  723.   new.block
  724.   format.btitle "title" output.check
  725.   author empty$
  726.     { organization empty$
  727.         { address new.block.checka
  728.           address output
  729.         }
  730.         'skip$
  731.       if$
  732.     }
  733.     { organization address new.block.checkb
  734.       organization output
  735.       address output
  736.     }
  737.   if$
  738.   format.edition output
  739.   format.date output
  740.   new.block
  741.   note output
  742.   output.annote
  743.   fin.entry
  744. }
  745. FUNCTION {mastersthesis}
  746. { output.bibitem
  747.   format.library output
  748.   new.sentence
  749.   format.authors "author" output.check
  750.   new.block
  751.   format.title "title" output.check
  752.   new.block
  753.   "Master's thesis" format.thesis.type output.nonnull
  754.   school "school" output.check
  755.   address output
  756.   format.date "year" output.check
  757.   new.block
  758.   note output
  759.   output.annote
  760.   fin.entry
  761. }
  762. FUNCTION {misc}
  763. { output.bibitem
  764.   format.library output
  765.   new.sentence
  766.   format.authors output
  767.   title howpublished new.block.checkb
  768.   format.title output
  769.   howpublished new.block.checka
  770.   howpublished output
  771.   format.date output
  772.   format.issn output
  773.   new.block
  774.   note output
  775.   output.annote
  776.   fin.entry
  777.   empty.misc.check
  778. }
  779. FUNCTION {phdthesis}
  780. { output.bibitem
  781.   format.library output
  782.   new.sentence
  783.   format.authors "author" output.check
  784.   new.block
  785.   format.btitle "title" output.check
  786.   new.block
  787.   "PhD thesis" format.thesis.type output.nonnull
  788.   school "school" output.check
  789.   address output
  790.   format.date "year" output.check
  791.   new.block
  792.   note output
  793.   output.annote
  794.   fin.entry
  795. }
  796. FUNCTION {proceedings}
  797. { output.bibitem
  798.   format.library output
  799.   new.sentence
  800.   editor empty$
  801.     { organization output }
  802.     { format.editors output.nonnull }
  803.   if$
  804.   new.block
  805.   format.btitle "title" output.check
  806.   format.bvolume output
  807.   format.number.series output
  808.   address empty$
  809.     { editor empty$
  810.         { publisher new.sentence.checka }
  811.         { organization publisher new.sentence.checkb
  812.           organization output
  813.         }
  814.       if$
  815.       publisher output
  816.       format.date "year" output.check
  817.     }
  818.     { address output.nonnull
  819.       format.date "year" output.check
  820.       new.sentence
  821.       editor empty$
  822.         'skip$
  823.         { organization output }
  824.       if$
  825.       publisher output
  826.     }
  827.   if$
  828.   format.isbn output
  829.   format.issn output
  830.   new.block
  831.   note output
  832.   output.annote
  833.   fin.entry
  834. }
  835. FUNCTION {techreport}
  836. { output.bibitem
  837.   format.library output
  838.   new.sentence
  839.   format.authors "author" output.check
  840.   new.block
  841.   format.title "title" output.check
  842.   new.block
  843.   format.tr.number output.nonnull
  844.   institution "institution" output.check
  845.   address output
  846.   format.date "year" output.check
  847.   new.block
  848.   note output
  849.   output.annote
  850.   fin.entry
  851. }
  852. FUNCTION {unpublished}
  853. { output.bibitem
  854.   format.library output
  855.   new.sentence
  856.   format.authors "author" output.check
  857.   new.block
  858.   format.title "title" output.check
  859.   new.block
  860.   note "note" output.check
  861.   format.date output
  862.   output.annote
  863.   fin.entry
  864. }
  865. FUNCTION {default.type} { misc }
  866. MACRO {jan} {"January"}
  867. MACRO {feb} {"February"}
  868. MACRO {mar} {"March"}
  869. MACRO {apr} {"April"}
  870. MACRO {may} {"May"}
  871. MACRO {jun} {"June"}
  872. MACRO {jul} {"July"}
  873. MACRO {aug} {"August"}
  874. MACRO {sep} {"September"}
  875. MACRO {oct} {"October"}
  876. MACRO {nov} {"November"}
  877. MACRO {dec} {"December"}
  878. MACRO {acmcs} {"ACM Computing Surveys"}
  879. MACRO {acta} {"Acta Informatica"}
  880. MACRO {cacm} {"Communications of the ACM"}
  881. MACRO {ibmjrd} {"IBM Journal of Research and Development"}
  882. MACRO {ibmsj} {"IBM Systems Journal"}
  883. MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
  884. MACRO {ieeetc} {"IEEE Transactions on Computers"}
  885. MACRO {ieeetcad}
  886.  {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
  887. MACRO {ipl} {"Information Processing Letters"}
  888. MACRO {jacm} {"Journal of the ACM"}
  889. MACRO {jcss} {"Journal of Computer and System Sciences"}
  890. MACRO {scp} {"Science of Computer Programming"}
  891. MACRO {sicomp} {"SIAM Journal on Computing"}
  892. MACRO {tocs} {"ACM Transactions on Computer Systems"}
  893. MACRO {tods} {"ACM Transactions on Database Systems"}
  894. MACRO {tog} {"ACM Transactions on Graphics"}
  895. MACRO {toms} {"ACM Transactions on Mathematical Software"}
  896. MACRO {toois} {"ACM Transactions on Office Information Systems"}
  897. MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
  898. MACRO {tcs} {"Theoretical Computer Science"}
  899. READ
  900. STRINGS { longest.label }
  901. INTEGERS { number.label longest.label.width }
  902. FUNCTION {initialize.longest.label}
  903. { "" 'longest.label :=
  904.   #1 'number.label :=
  905.   #0 'longest.label.width :=
  906. }
  907. FUNCTION {longest.label.pass}
  908. { number.label int.to.str$ 'label :=
  909.   number.label #1 + 'number.label :=
  910.   label width$ longest.label.width >
  911.     { label 'longest.label :=
  912.       label width$ 'longest.label.width :=
  913.     }
  914.     'skip$
  915.   if$
  916. }
  917. EXECUTE {initialize.longest.label}
  918. ITERATE {longest.label.pass}
  919. FUNCTION {begin.bib}
  920. { preamble$ empty$
  921.     'skip$
  922.     { preamble$ write$ newline$ }
  923.   if$
  924.   "\begin{thebibliography}{"  longest.label  * "}" * write$ newline$
  925. }
  926. EXECUTE {begin.bib}
  927. EXECUTE {init.state.consts}
  928. ITERATE {call.type$}
  929. FUNCTION {end.bib}
  930. { newline$
  931.   "\end{thebibliography}" write$ newline$
  932. }
  933. EXECUTE {end.bib}
  934.